#include <iostream>
#include <string>
#include <fstream>
#include "bundle.h"

int main(int argc, char* argv[])
{
    std::cout << "argv[1] 是原始文件路径名称" << std::endl;
    std::cout << "argv[2] 是压缩包名称" << std::endl;
    if(argc < 3)  return -1;

    std::string ifilename = argv[1];
    std::string ofilename = argv[2];

    //1.把原始文件内容读取出来
    //std::ifstream ifs(ifilename, std::ofstream::in | std::ofstream::binary);
    std::ifstream ifs;

    ifs.open(ifilename, std::ios::binary);//以二进制打开文件,因为有些文件里面有什么数据我们不知道
    ifs.seekg(0, std::ios::end);//跳转读写位置到文件末尾,目的是获取文件大小
    size_t fsize = ifs.tellg();//获取当前读写位置相较于起始位置的偏移量
    ifs.seekg(0, std::ios::beg);//跳转到文件起始
    std::string body;
    body.resize(fsize);
    ifs.read(&body[0], fsize);//注意如果是ifs.c_str(),是const char*不能修改

    //2.进行文件压缩
    std::string packed = bundle::pack(bundle::LZIP, body);
    //std::ofstream ofs(ofilename, std::ofstream::out | std::ofstream::binary);
    std::ofstream ofs;

    ofs.open(ofilename, std::ios::binary);//打开压缩包文件
    ofs.write(&packed[0], packed.size());//将压缩后的数据写入压缩包文件

    ifs.close();
    ofs.close();
    return 0;
}
